Package Auto-Discovery
Laravel 5.5で導入された新規パッケージを検知してロードしてくれる仕組み
前提
パッケージが適切にcomposer.jsonを設定してくれていれば
効果
利用者がconf/app.phpのprovidersやaliasesにパッケージごとの設定を追加する必要がなくなる
Laravel Package Auto-Discovery - Laravel News
Package Development - Laravel - The PHP Framework For Web Artisans
artisanコマンドで実行されてる
code:zsh
Illuminate\Foundation\ComposerScripts::postAutoloadDump
@php artisan package:discover --ansi
Discovered Package: fideloper/proxy
Discovered Package: laravel/nexmo-notification-channel
Discovered Package: laravel/nova
Discovered Package: laravel/slack-notification-channel
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
このコマンドはScripts (Composer)で実現されている
実装
追加されたコード
add files · laravel/framework@2954091
提案は↓のPRのようだが、このファイルは現存しない
【5.5】 Autoload Package Providers by driesvints · Pull Request #19420 · laravel/framework
php artisan package:discoverの挙動( discoverコマンドの実装はここ)
vendor/composer/installed.jsonを読んで、Package Auto-Discoveryに対応した記法を書いているモジュールをロードする。結果のPHPスクリプトをmanifest path(bootstrap/cache/packages.php)に保存する
postAutoloadDumpではprovidersの情報が入っているbootstrap/cache/{packages,services}.phpを削除している
これらのファイルはphp artisan clear-compiledで削除できる